{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Demo 3: Simple Image reconstruction"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "This demo will show you a simple image reconstruction can be performed, by using OS_SART and FDK.\n",
    "NOTE: if you havent already downloaded the tigre_demo_file and navigated to the correct directory, do so before continuing with this demo. \n",
    "--------------------------------------------------------------------------\n",
    "--------------------------------------------------------------------------\n",
    "This file is part of the TIGRE Toolbox\n",
    "\n",
    "Copyright (c) 2015, University of Bath and\n",
    "                    CERN-European Organization for Nuclear Research\n",
    "                    All rights reserved.\n",
    "\n",
    "License:            Open Source under BSD.\n",
    "                    See the full license at\n",
    "                    https://github.com/CERN/TIGRE/license.txt\n",
    "\n",
    "Contact:            tigre.toolbox@gmail.com\n",
    "Codes:              https://github.com/CERN/TIGRE/\n",
    "--------------------------------------------------------------------------\n",
    "Coded by:          MATLAB (original code): Ander Biguri\n",
    "                   PYTHON : Reuben Lindroos,Sam Loescher"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Define geometry"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from tigre.geometry import TIGREParameters\n",
    "geo=TIGREParameters(high_quality=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Load data and generate projections"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "from _Ax import Ax\n",
    "from Test_data import data_loader\n",
    "# define angles\n",
    "angles=np.linspace(0,2*np.pi,dtype=np.float32)\n",
    "# load head phantom data\n",
    "head=data_loader.load_head_phantom(number_of_voxels=geo.nVoxel)\n",
    "# generate projections\n",
    "projections=Ax(head,geo,angles,'interpolated')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Reconstruct image using OS-SART and FDK"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "OS_SART algorithm in progress.\n",
      "Esitmated time until completetion (s): 2.75035\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f1cc4053a90>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<tigre.Utilities.plotImg.plotImg instance at 0x7f1ca80b9c20>"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from tigre.Algorithms.FDK import FDK \n",
    "from tigre.Algorithms.OS_SART import OS_SART\n",
    "from tigre.Utilities.plotImg import plotImg\n",
    "\n",
    "# OS_SART\n",
    "niter=50\n",
    "imgOSSART=OS_SART(projections,geo,angles,niter)\n",
    "\n",
    "# FDK \n",
    "imgfdk=FDK(projections,geo,angles)\n",
    "\n",
    "# Show the results\n",
    "plotImg(np.hstack((imgOSSART,imgfdk)),slice=32,dim='x')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.13"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
